A computer network is a collection of interconnected computing devices that exchange data and share resources. Example computing devices include media servers, desktop computers, laptops, workstations, PDAs, wireless devices, network-ready appliances, file servers, print servers or other devices. End user computing devices may run one or more applications, such as mobile calls, video games, videoconferencing, and email, among others.
In a packet-based network the computing devices communicate data using communication sessions for which the data is divided into small blocks called packets and transmitted through the network. Intermediate devices within the network, such as routers, switches, gateways, network address translation (NAT) devices, firewalls, intrusion detection and protection (IDP) devices, provide infrastructure for transporting and processing the packets as the packets flow through the network. In this way, the packets may be individually routed across the network from a source device to a destination device. The destination device extracts the data from the packets and assembles the data into its original form.
In certain applications, such as voice over Internet protocol (VoIP) applications, online gaming applications, file transfer applications and/or other peer-to-peer (P2P) applications, there may be delay in communicating packets due to user inactivity, buffering or other reasons. These delays may, unless some mechanism is provided, result in a timeout of network sessions supporting transport of data for these types of applications, which can lead to interruptions in the application execution due to reestablishment of the underlying network session. To avoid these delays, the network devices hosting the applications may periodically send so-called “keep-alive” messages to prevent the network session from timing out (or, in other words, keep the network session alive). These keep-alive messages may, in some contexts, consume significant resources, especially for mobile devices operating with limited power (e.g., due to the use of a battery). Various protocols, such as a port control protocol (PCP), may reduce the number of keep-alive messages that are required to be sent, but often at the expense of additional network architecture (in the form of a dedicated PCP server for example) while also requiring full adoption of yet another protocol, i.e., PCP in this example, by all of the network devices throughout the entire network.